package com.simpleframe.persistence;

import java.util.List;

import com.simpleframe.persistence.hibernate.Finder;
import com.simpleframe.persistence.hibernate.Page;

public interface DbSession {
	
	// 增删改查
	
	 public void save(Object entity);
	 
	 public void delete(Object entity);
	 
	 public void update(Object entity);
	  
	 public <T> T get(Class<T> entityClass, Object primaryKey);
	 
	 // 返回一个对象
	 
	 /**
	  * 根据一个属性去查找对象
	  * @param clazz
	  * @param property
	  * @param value
	  * @return
	  */
	 public Object findUniqueByProperty(Class<?> clazz, String property, Object value);
	 
	 /**
	  * 根据HQL得到对象  from xxx where name=?
	  * values 根据？的顺序输入
	  * @param hql
	  * @param values
	  * @return
	  */
	 public Object findUnique(String hql, Object... values);
	 
	 
	 //返回一个分页
	 public Page findPage(Finder finder, int pageNo, int pageSize);
	 
	 //返回一个List
	 /**
	  * 得到某个表下的所有数据
	  */
	 @SuppressWarnings("unchecked")
	 public List findAll(Class entityClass);
	 
	 
	 /**
	  * 根据HQL得到列表  from xxx where name=?
	  * values 根据？的顺序输入
	  * @param hql
	  * @param values
	  * @return
	  */
	 @SuppressWarnings("unchecked")
	 public List find(String hql, Object...values);
	 
	 
}
